package fr.lifl.homade.iuta.ip;

import fr.lifl.homade.iuta.exceptions.InsufisantDataException;
import fr.lifl.homade.iuta.model.Interpreteur;

public class IPNot extends AbstractIP {
	public IPNot(Interpreteur interpreteur){
		super(interpreteur);
	}

	@Override
	public void exec(int in, int out) throws InsufisantDataException{
		if(in > interpreteur.getDataStack().size())
			throw new InsufisantDataException("Il y a moins de " + in + " donnees dans le stack de donnees");
		if(in != 1)
			throw new IllegalArgumentException("Le nombre de donnees a enlever du stack de donnees doit valoir 1");
		if(out != 1)
			throw new IllegalArgumentException("IPNot ne peut ajouter qu'un seul element dans le stack de donnees");
		
		int res = interpreteur.getDataStack().pop();
		if(res != 0)
			interpreteur.getDataStack().add(0);
		else{
			interpreteur.getDataStack().add(res);
		}
	}

}
